--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
docs/agents/module-ownership.md e41daa5b65e07a5baa1aaad32d97f90482f1cd1c (e41daa5b) Text, 11.44 KB
Module ownership map
Domain ownership for MeshChatX. Use this when deciding where code and tests live.
Orchestration entry remains T383838meshchatx.meshchat (T383838ReticulumMeshChat, T383838main).
Schema contracts live under T383838tests/backend/ (not production route modules).
Backend
┌───────────────────┬─────┬─────────────────────────────┬──────────────────────────────┬─────┬─────┐
│ Domain │ Ma… │ HTTP route module │ WS module │ Pr… │ Fr… │
├───────────────────┼─────┼─────────────────────────────┼──────────────────────────────┼─────┼─────┤
│ Identity │ T383838id… │ T383838http/routes/identities.py │ T383838http/ws/dispatch.py │ T383838te… │ Id… │
│ Status / startup │ T383838li… │ T383838http/routes/status.py │ (status via REST) │ T383838te… │ Ap… │
│ Auth / CSRF │ T383838cs… │ T383838http/routes/auth.py │ T383838http/ws/dispatch.py │ T383838te… │ Au… │
│ Messages / LXMF │ T383838me… │ T383838http/routes/messages.py, T383838l… │ T383838http/ws/dispatch.py │ LX… │ T383838me… │
│ Telephone / LXST │ T383838te… │ T383838http/routes/telephone.py, T383838… │ T383838http/ws/dispatch.py │ te… │ T383838ca… │
│ RRC │ T383838rr… │ T383838http/routes/rrc.py │ T383838http/ws/dispatch.py │ RR… │ T383838re… │
│ Map │ T383838ma… │ T383838http/routes/map.py │ marker updates via broadcast │ ma… │ T383838ma… │
│ Plugins │ T383838pl… │ T383838http/routes/plugins.py, T383838si… │ T383838http/ws/dispatch.py │ pl… │ T383838se… │
│ FileSync │ T383838rn… │ T383838http/routes/filesync.py │ (REST-heavy) │ fi… │ T383838fi… │
│ Interfaces │ T383838in… │ T383838http/routes/interfaces.py │ (announce loops on app) │ in… │ T383838in… │
│ Database / backup │ T383838da… │ T383838http/routes/database.py, T383838m… │ (broadcasts on restore) │ ba… │ Ab… │
│ Docs │ T383838do… │ T383838http/routes/docs.py │ (none) │ do… │ T383838do… │
│ Sandbox │ T383838la… │ T383838http/routes/status.py │ (none) │ T383838te… │ We… │
│ RNS Link API │ T383838rn… │ (WS only) │ T383838http/ws/dispatch.py │ T383838te… │ pl… │
│ Config │ T383838co… │ T383838http/routes/config.py │ T383838http/ws/dispatch.py │ se… │ T383838se… │
└───────────────────┴─────┴─────────────────────────────┴──────────────────────────────┴─────┴─────┘
HTTP package layout
T282828
meshchatx/src/backend/http/
context.py
errors.py
live_names.py
middleware.py
register.py
routes/<domain>.py
routes/__init__.py
ws/dispatch.py
T383838register_all_routes(routes, app) is the sole composition entry. Call it only from
T383838ReticulumMeshChat._define_routes. Domain register functions are listed in fixed order
in T383838routes/__init__.py. Free names resolve through T383838live_names.inject_meshchat_names.
WS inbound handlers live in T383838ws/handlers_*.py and are composed by T383838ws/dispatch.py.
Frontend mega-pages
Placement for extracts. Follow T383838docs/agents/skills/vue-mega-page-split/SKILL.md.
Do not invent folders outside this table.
┌─────────────────────────────┬──────────────────────────────┬─────────────────────────────────────┐
│ Kind │ Put it here │ Example │
├─────────────────────────────┼──────────────────────────────┼─────────────────────────────────────┤
│ Page-private panel or UI │ T383838components/<feature>/intern… │ MapSearchBar │
│ Settings chunk │ T383838components/settings/section… │ TelephonySettingsSection │
│ Pure logic │ colocated T383838*.js or T383838js/<featu… │ clusterUtils, settingsConfigService │
│ Cross-feature primitive │ root T383838components/ or T383838compone… │ ConfirmDialog, Toggle │
│ Nav, tools, commands wiring │ T383838js/registries/ only │ never grow App.vue for discovery │
└─────────────────────────────┴──────────────────────────────┴─────────────────────────────────────┘
┌──────────────────────────────────────────┬─────┬───────────┬───────────────────────────────┬─────┐
│ Page shell │ On… │ Planned … │ Shared JS │ Pr… │
├──────────────────────────────────────────┼─────┼───────────┼───────────────────────────────┼─────┤
│ T383838settings/SettingsPage.vue │ T383838se… │ more sec… │ T383838js/settings/ │ T383838Se… │
│ T383838messages/ConversationViewer.vue │ T383838co… │ further … │ T383838conversationMessageHelpers.js │ Co… │
│ T383838call/CallPage.vue │ T383838ca… │ more tab… │ call helpers │ T383838Ca… │
│ T383838map/MapPage.vue │ T383838ma… │ more ove… │ T383838js/map* │ ma… │
│ T383838relay/RelayChatPage.vue │ re… │ further … │ T383838js/relay* │ re… │
│ T383838App.vue │ T383838la… │ more she… │ registries, WS shell │ T383838Ap… │
│ T383838network-visualiser/NetworkVisualiser.vue │ T383838ne… │ more chr… │ T383838js/networkVisualiser* │ ne… │
│ T383838interfaces/AddInterfacePage.vue │ T383838in… │ further … │ T383838js/interfaceDiscoveryUtils.js │ Ad… │
└──────────────────────────────────────────┴─────┴───────────┴───────────────────────────────┴─────┘
Frontend ownership contracts:
• T383838tests/frontend/fixtures/frontend_mega_page_ownership.json
• T383838tests/frontend/fixtures/frontend_symbol_continuity/
• T383838tests/frontend/frontendOwnershipContract.test.js
Contract ownership
┌───────────────────────────┬──────────────────────────────────────────────────────────────────────┐
│ Contract │ Owner files │
├───────────────────────────┼──────────────────────────────────────────────────────────────────────┤
│ HTTP route inventory │ T383838tests/backend/fixtures/http_api_routes.json, scanners in T383838http_api_c… │
│ HTTP JSON GET schemas │ T383838http_api_response_schemas.py, T383838http_api_response_registry.py │
│ Core status/auth/app_info │ T383838api_json_contract_schemas.py │
│ WS message manifest │ T383838tests/backend/fixtures/ws_message_manifest.json, T383838ws_contract_helper… │
└───────────────────────────┴──────────────────────────────────────────────────────────────────────┘
Schema contracts stay in T383838tests/backend/. Route and WS owners are production modules under T383838backend/http/.
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────